home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 December / CHIP Aralık 1996.iso / prog / ra250 / struct.250 < prev    next >
Text File  |  1995-11-09  |  33KB  |  940 lines

  1. (* Developers notes and Turbo Pascal structures for RemoteAccess 2.50 GAMMA
  2.  
  3.    Copyright (c) 1996 Andrew Milner & Wantree Development
  4.    All Rights Reserved
  5.  
  6.    If you develop software which accesses any of the following files,
  7.    you should read the following notes. They refer to important 
  8.    structure changes in this release.
  9.  
  10.         MESSAGES.RA
  11.         FILES.RA
  12.         MGROUPS.RA
  13.         FGROUPS.RA
  14.  
  15.    The area number to which records in the above files refer is no
  16.    longer dependent upon the position of the record in the file.
  17.    This is to allow utilities to move, copy, insert and delete
  18.    areas and groups at will, without the need to renumber every
  19.    reference to every moved area or group.
  20.  
  21.    The following applies to the record structure of all the above
  22.    files as published in this document.
  23.  
  24.    If you look at each record definition, you will notice that the
  25.    MESSAGErecord and FILESrecord structures each have 4 unused
  26.    bytes at the beginning, and that the GROUPrecord structure has 2
  27.    unused bytes at the beginning.
  28.  
  29.    In RA 2.50, the first two bytes of each of these records are
  30.    redefined as a single word value (2 byte unsigned integer). This
  31.    word holds the area number of that record - the name of the new
  32.    field is 'AreaNum'. This has the following implications:
  33.  
  34.    1. To get the Hudson message-base board number for a record from
  35.    MESSAGES.RA, do NOT rely on its position. The AreaNum field
  36.    contains the actual board number.
  37.  
  38.    2. To access the correct FDB files from a file area record in
  39.    FILES.RA, use the value contained in the AreaNum field, NOT the
  40.    number of the position of the record.
  41.  
  42.    3. Utilities are now free to move any record to any location in
  43.    these files without having to worry about renumbering FDB files
  44.    or menu entries.
  45.  
  46.    4. When ADDING a new record, utilities MUST assign a valid area
  47.    number to the record in the AreaNum field. Valid numbers are in
  48.    the range 1 to 65535, and MUST be unique. See the note about
  49.    index files below for information on how to determine the next
  50.    available unique number.
  51.  
  52.    The INDEX files
  53.    ---------------
  54.    In order to provide the fastest possible access to the above four
  55.    files, each is now indexed. The index files have the same path
  56.    and base name with an extension of 'RDX' - for example, the index
  57.    file for C:\RA\FILES.RA would be C:\RA\FILES.RDX.
  58.  
  59.    The index files are automatically generated by RACONFIG after
  60.    editing areas. They must also be generated by any utility which:
  61.  
  62.    1. Adds, deletes or moves a record within its file, or
  63.    2. Changes the AreaNum field of any record.
  64.  
  65.    FAILURE TO REINDEX WILL CAUSE UNPREDICTABLE RESULTS FOR THE
  66.    SYSOP! RA and its utilities all check to make sure that the index
  67.    files are up to date.
  68.  
  69.    The format of the index files is very simple. It is a flat file
  70.    of word (2 byte unsigned integer) records which contains one
  71.    record for each AreaNum value in the corresponding file. The
  72.    physical position of each index record is equal to the AreaNum
  73.    value minus 1. The value of the index record is equal to the
  74.    physical position of the record for that area number in the main
  75.    file PLUS 1. A value of zero indicates that the area number is
  76.    not currently used.
  77.  
  78.    For example:
  79.  
  80.    File offest  FILES.RA AreaNum    FILES.RDX record value
  81.         0             1                   1
  82.         1             2                   2
  83.         2             10                  0
  84.         3             11                  0
  85.         4             12                  0
  86.         5             13                  0
  87.         6             -                   0
  88.         7             -                   0
  89.         8             -                   0
  90.         9             -                   3
  91.        10             -                   4
  92.        11             -                   5
  93.        12             -                   6
  94.  
  95.    In the above example table, to look up the correct record in
  96.    FILES.RA for a particular area number, the code might look
  97.    something like this in Pascal:
  98.  
  99.    Seek(RDX, AreaNum-1);
  100.    Read(RDX, Index);
  101.    Seek(FILESRA, Index-1);
  102.    Read(FILESRA, FILESRAinfo);
  103.  
  104.    Determining the next free unique area number is a simple matter
  105.    of scanning the index file until a value of zero is encountered.
  106.  
  107. *)
  108.  
  109. type
  110.   AskType        = (Yes, No, Ask, Only);
  111.   VideoType      = (Auto, Short, Long);
  112.   MsgType        = (LocalMail, NetMail, EchoMail, Internet, Newsgroup);
  113.   MsgKindsType   = (Both, Private, Public, ROnly, NoReply);
  114.   OrphanType     = (Ignore, Create, Kill);
  115.   FlagType       = array[1..4] of Byte;
  116.   ResetType      = (Never, Week, Month, Year);
  117.   Time           = String[5];
  118.   Date           = String[8];
  119.   LongDate       = String[9];
  120.   ByteArray32    = Array[1..32] of Byte;
  121.  
  122.   NetAddress     = record
  123.                      Zone,
  124.                      Net,
  125.                      Node,
  126.                      Point          : Word;
  127.                    end;
  128.  
  129.   LIMITSrecord   = record
  130.                      Security,
  131.                      Ltime,
  132.                      L300,
  133.                      L1200,
  134.                      L2400,
  135.                      L4800,
  136.                      L7200,
  137.                      L9600,
  138.                      L12000,
  139.                      L14400,
  140.                      L16800,
  141.                      L19200,
  142.                      L38400,
  143.                      Llocal,
  144.                      RatioNum,
  145.                      RatioK         : Word;
  146.                      PerMinCost     : Real;
  147.  
  148.                      L21600,
  149.                      L24000,
  150.                      L26400,
  151.                      L28800,
  152.                      L57600,
  153.                      L64000         : Word;
  154.  
  155.                      FlexiTime      : Real;
  156.                      LsessionTime   : Word;
  157.                      ResetAmt       : Word;
  158.                      ResetPeriod    : ResetType;
  159.                      ResetOffset    : Word;
  160.  
  161.                      L31200,
  162.                      L33600         : Word;
  163.                      FreeSpace      : Array[1..13] of Byte;
  164.                    end;
  165.  
  166.   LANGUAGErecord = record
  167.                      Name           : String[20];
  168.                      Attribute      : Byte;
  169.                      DefName,
  170.                      MenuPath,
  171.                      TextPath,
  172.                      QuesPath       : String[60];
  173.                      Security       : Word;
  174.                      Flags,
  175.                      NotFlagsMask   : FlagType;
  176.                      FreeSpace      : Array[1..190] of Byte;
  177.                    end;
  178.  
  179.   MSGINFOrecord  = record
  180.                      LowMsg,
  181.                      HighMsg,
  182.                      TotalMsgs      : Word;
  183.                      TotalOnBoard   : array[1..200] of Word;
  184.                    end;
  185.  
  186.   HMBMSGIDXrecord = record
  187.                       MsgNum         : Integer;
  188.                       Board          : Byte;
  189.                     end;
  190.  
  191.   MSGTOIDXrecord = String[35];
  192.  
  193.   HMBMSGHDRrecord= record
  194.                      MsgNum         : Integer;
  195.                      PrevReply,
  196.                      NextReply,
  197.                      TimesRead      : Word;
  198.                      StartBlock     : Word;
  199.                      NumBlocks,
  200.                      DestNet,
  201.                      DestNode,
  202.                      OrigNet,
  203.                      OrigNode       : Word;
  204.                      DestZone,
  205.                      OrigZone       : Byte;
  206.                      Cost           : Word;
  207.                      MsgAttr,
  208.                      NetAttr,
  209.                      Board          : Byte;
  210.                      PostTime       : Time;
  211.                      PostDate       : Date;
  212.                      WhoTo,
  213.                      WhoFrom        : MSGTOIDXrecord;
  214.                      Subject        : String[72];
  215.                    end;
  216.  
  217.   MSGTXTrecord   = String[255];
  218.  
  219.   USERONrecord   = record
  220.                      Name,
  221.                      Handle         : MSGTOIDXrecord;
  222.                      Line           : Byte;
  223.                      Baud           : Word;
  224.                      City           : String[25];
  225.                      Status,
  226.                      Attribute      : Byte;
  227.                      StatDesc       : String[10];
  228.                      FreeSpace      : Array[1..98] of Byte;
  229.                      NoCalls        : Word;
  230.                    end;
  231.  
  232.                    { Status byte - 0 : Browsing (in a menu)
  233.                                    1 : Uploading/downloading
  234.                                    2 : Reading/posting messages
  235.                                    3 : In a door/external utility
  236.                                    4 : Chatting with sysop
  237.                                    5 : Answering questionnaire 
  238.                                    6 : RTC
  239.                                    7 : New user logon
  240.                                  255 : User-defined - display StatDesc
  241.  
  242.                      Attribute   - Bit 0 : Hidden
  243.                                        1 : Wants chat
  244.                                        2 : Reserved for RANETMGR
  245.                                        3 : Do not disturb flag 
  246.                                        6 : Ready (0=busy) }
  247.  
  248.   LASTCALLrecord = record
  249.                      Line           : Byte;
  250.                      Name,
  251.                      Handle         : MSGTOIDXrecord;
  252.                      City           : String[25];
  253.                      Baud           : Word;
  254.                      Times          : LongInt;
  255.                      LogOn          : String[5];
  256.                      LogOff         : String[5];
  257.                      Attribute      : Byte;
  258.                    end;
  259.  
  260.                 { Attribute - Bit 0 : Hidden }
  261.  
  262.   FILESHDRrecord = record
  263.                      Name           : String[12];
  264.                      Size,
  265.                      CRC32          : LongInt;
  266.                      Uploader       : String[35];
  267.                      UploadDate,
  268.                      FileDate,
  269.                      LastDL         : LongInt;
  270.                      TimesDL        : Word;
  271.                      Attrib         : Byte;
  272.                      Password       : String[15];
  273.                      KeyWord        : Array[1..5] of String[15];
  274.                      Cost           : Word;
  275.                      LongDescPtr    : LongInt;
  276.                      FreeSpace      : Array[1..20] of Byte;
  277.                    end;
  278.  
  279.           {Attrib - Bit 0 : Deleted
  280.                         1 : Unlisted
  281.                         2 : Free (don't adjust ratio) - Does NOT affect "Cost"
  282.                         3 : Not available (don't allow downloads)
  283.                         4 : Locked (no kill)
  284.                         5 : Missing/offline
  285.                         6 : No time restrictions - always allow DL
  286.           }
  287.  
  288.   FILESIDXrecord = record
  289.                      Name           : String[12];
  290.                      UploadDate     : LongInt;
  291.                      KeyWordCRC     : Array[1..5] of LongInt;
  292.                      LongDescPtr    : LongInt;
  293.                    end;
  294.  
  295.   LASTREADrecord = array[1..200] of Word;
  296.  
  297.   USERSIDXrecord = record
  298.                      NameCRC32,
  299.                      HandleCRC32    : LongInt;
  300.                    end;
  301.  
  302.   COMBINEDrecord = array[1..200] of Word; 
  303.  
  304.   USERSrecord    = record
  305.                      Name           : MSGTOIDXrecord;
  306.                      Location       : String[25];
  307.                      Organisation,
  308.                      Address1,
  309.                      Address2,
  310.                      Address3       : String[50];
  311.                      Handle         : String[35];
  312.                      Comment        : String[80];
  313.                      PasswordCRC    : LongInt;
  314.                      DataPhone,
  315.                      VoicePhone     : String[15];
  316.                      LastTime       : Time;
  317.                      LastDate       : Date;
  318.  
  319.                      Attribute,
  320.  
  321.                       { Bit 0 : Deleted
  322.                             1 : Clear screen
  323.                             2 : More prompt
  324.                             3 : ANSI
  325.                             4 : No-kill
  326.                             5 : Xfer priority
  327.                             6 : Full screen msg editor
  328.                             7 : Quiet mode }
  329.  
  330.                      Attribute2     : Byte;
  331.  
  332.                       { Bit 0 : Hot-keys
  333.                             1 : AVT/0
  334.                             2 : Full screen message viewer
  335.                             3 : Hidden from userlist 
  336.                             4 : Page priority 
  337.                             5 : No echomail in mailbox scan
  338.                             6 : Guest account 
  339.                             7 : Post bill enabled }
  340.  
  341.                      Flags          : FlagType;
  342.                      Credit,
  343.                      Pending        : LongInt;
  344.                      MsgsPosted,
  345.                      Security       : Word;
  346.                      LastRead,
  347.                      NoCalls,
  348.                      Uploads,
  349.                      Downloads,
  350.                      UploadsK,
  351.                      DownloadsK,
  352.                      TodayK         : LongInt;
  353.                      Elapsed        : Integer;
  354.                      ScreenLength   : Word;
  355.                      LastPwdChange  : Byte;
  356.                      Group          : Word;
  357.                      CombinedInfo   : COMBINEDrecord;
  358.                      FirstDate,
  359.                      BirthDate,
  360.                      SubDate        : Date;
  361.                      ScreenWidth,
  362.                      Language,
  363.                      DateFormat     : Byte;      
  364.                      ForwardTo      : String[35];
  365.                      MsgArea,
  366.                      FileArea       : Word;
  367.                      DefaultProtocol: Char;
  368.                      FileGroup      : Word;
  369.                      LastDOBCheck   : Byte;
  370.                      Sex            : Byte;
  371.                      XIrecord       : LongInt;
  372.                      MsgGroup       : Word;
  373.  
  374.                      Attribute3     : Byte;
  375.  
  376.                       { Bit 0 : Mailbox check: scan selected areas only }
  377.  
  378.                      Password       : String[15];
  379.  
  380.                      FreeSpace      : Array[1..31] of Byte;
  381.                    end;
  382.  
  383.   USERSXIrecord  = record
  384.                      FreeSpace      : Array[1..200] of Byte;
  385.                    end;
  386.  
  387.   SYSINFOrecord  = record
  388.                      TotalCalls     : LongInt;
  389.                      LastCaller,
  390.                      LastHandle     : MSGTOIDXrecord;
  391.                      ExtraSpace     : array[1..92] of Byte;
  392.                    end;
  393.  
  394.   TIMELOGrecord  = record
  395.                      StartDate      : Date;
  396.                      BusyPerHour    : array[0..23] of Word;
  397.                      BusyPerDay     : array[0..6] of Word;
  398.                    end;
  399.  
  400.   MNUrecord      = record
  401.                      Typ            : Byte;
  402.                      Security,
  403.                      MaxSec         : Word;
  404.                      NotFlagsMask,
  405.                      Flags          : FlagType;
  406.                      TimeLeft,
  407.                      TimeUsed       : Word;
  408.                      Age,
  409.                      TermAttrib     : Byte;
  410.  
  411.                      {Bit 0 : ANSI
  412.                           1 : AVT
  413.                           2 : RIP}
  414.  
  415.                      MinSpeed,
  416.                      MaxSpeed,
  417.                      Credit,
  418.                      OptionCost,
  419.                      PerMinCost     : LongInt;
  420.                      Node,
  421.                      Group          : ByteArray32;
  422.                      StartTime,
  423.                      StopTime       : Array[1..7] of Word;
  424.                      Display        : String[135];
  425.                      HotKey         : String[8];
  426.                      MiscData       : String[135];
  427.                      Foreground,
  428.                      Background     : Byte;
  429.                      FreeSpace      : Array[1..50] of Byte;
  430.                    end;
  431.  
  432.   EVENTrecord    = record
  433.                      Status         : Byte; { 0=Deleted 1=Enabled 2=Disabled }
  434.                      StartTime      : Time;
  435.                      ErrorLevel     : Byte;
  436.                      Days           : Byte;
  437.                      Forced         : Boolean;
  438.                      LastTimeRun    : Date;
  439.                    end;
  440.  
  441.   EVENTrecordArray = array[1..20] of EVENTrecord;
  442.  
  443.   MESSAGErecord  = record
  444.                      AreaNum,   
  445.                      Unused         : Word;
  446.                      Name           : String[40];
  447.                      Typ            : MsgType;
  448.                      MsgKinds       : MsgKindsType;
  449.                      Attribute      : Byte;
  450.  
  451.                       { Bit 0 : Enable EchoInfo
  452.                             1 : Combined access
  453.                             2 : File attaches
  454.                             3 : Allow aliases
  455.                             4 : Use SoftCRs as characters
  456.                             5 : Force handle     
  457.                             6 : Allow deletes 
  458.                             7 : Is a JAM area }
  459.  
  460.                      DaysKill,    { Kill older than 'x' days }
  461.                      RecvKill       : Byte; { Kill recv msgs, recv for more than 'x' days }
  462.                      CountKill      : Word;
  463.  
  464.                      ReadSecurity   : Word;
  465.                      ReadFlags,
  466.                      ReadNotFlags   : FlagType;
  467.  
  468.                      WriteSecurity  : Word;
  469.                      WriteFlags,
  470.                      WriteNotFlags  : FlagType;
  471.  
  472.                      SysopSecurity  : Word;
  473.                      SysopFlags,
  474.                      SysopNotFlags  : FlagType;
  475.  
  476.                      OriginLine     : String[60];
  477.                      AkaAddress     : Byte;
  478.   
  479.                      Age            : Byte;
  480.  
  481.                      JAMbase        : String[60];
  482.                      Group          : Word;
  483.                      AltGroup       : Array[1..3] of Word;
  484.  
  485.                      Attribute2     : Byte;
  486.  
  487.                       { Bit 0 : Include in all groups }
  488.  
  489.                      NetmailArea    : Word;
  490.                      FreeSpace2     : Array[1..7] of Byte;
  491.                    end;
  492.  
  493.   GROUPrecord    = record
  494.                      AreaNum        : Word;
  495.                      Name           : String[40];
  496.                      Security       : Word;
  497.                      Flags,
  498.                      NotFlagsMask   : FlagType;
  499.                      FreeSpace      : Array[1..100] of Byte;
  500.                    end;
  501.  
  502.   FILESrecord    = record
  503.                      AreaNum,
  504.                      Unused         : Word;
  505.                      Name           : String[40];
  506.                      Attrib         : Byte;
  507.  
  508.                       { Bit 0 : Include in new files scan
  509.                             1 : Include in upload dupe scan
  510.                             2 : Permit long descriptions
  511.                             3 : Area is on CD-ROM 
  512.                             4 : All files are FREE 
  513.                             5 : Allow DLs not in FDB 
  514.                             6 : Allow users to password uploads
  515.                             7 : Scan uploads }
  516.  
  517.                      FilePath       : String[40];
  518.                      KillDaysDL,
  519.                      KillDaysFD     : Word;
  520.                      Password       : String[15];
  521.                      MoveArea       : Word;
  522.                      Age,
  523.                      ConvertExt     : Byte;
  524.                      Group          : Word;
  525.                      Attrib2        : Byte;
  526.  
  527.                       { Bit 0 : Include in all groups }
  528.  
  529.                      DefCost,
  530.                      UploadArea,
  531.                      UploadSecurity : Word;
  532.                      UploadFlags,
  533.                      UploadNotFlags : FlagType;
  534.                      Security       : Word;
  535.                      Flags,
  536.                      NotFlags       : FlagType;
  537.                      ListSecurity   : Word;
  538.                      ListFlags,
  539.                      ListNotFlags   : FlagType;
  540.                      AltGroup       : Array[1..3] of Word;
  541.                      Device         : Byte;
  542.                      FreeSpace      : Array[1..13] of Byte;
  543.                    end;
  544.  
  545.   CONFrecord     = record
  546.                      Name,
  547.                      Parent         : String[8];
  548.                      Desc           : String[70];
  549.                      Attr           : Byte;
  550.  
  551.                       { Bit 0 : Private
  552.                             1 : Unlisted
  553.                             2 : Global  
  554.                             3 : Permanent
  555.                             4 : Use handles
  556.                                           }
  557.  
  558.                      Moderator      : String[35];
  559.                      Language       : String[20];
  560.                      Password       : String[15];
  561.                      Security       : Word;
  562.                      Flags          : FlagType;
  563.                      NumNodes       : Byte;
  564.                      Active         : Array[1..250] of Byte;
  565.                      Child          : Array[1..250] of Boolean;
  566.                      NotFlagsMask   : FlagType;
  567.                      FreeSpace      : Array[1..96] of Byte;
  568.                    end;
  569.  
  570.   MODEMrecord  = record
  571.                    ComPort,
  572.                    InitTries        : Byte;
  573.                    BufferSize,
  574.                    ModemDelay       : Word;
  575.                    MaxSpeed         : LongInt;
  576.                    SendBreak,
  577.                    LockModem,
  578.                    AnswerPhone,
  579.                    OffHook          : Boolean;
  580.                    InitStr,
  581.                    InitStr2,
  582.                    BusyStr          : String[70];
  583.                    InitResp,
  584.                    BusyResp,
  585.                    Connect300,
  586.                    Connect1200,
  587.                    Connect2400,
  588.                    Connect4800,
  589.                    Connect7200,
  590.                    Connect9600,
  591.                    Connect12k,
  592.                    Connect14k,
  593.                    Connect16k,
  594.                    Connect19k,
  595.                    Connect38k,
  596.                    ConnectFax       : String[40];
  597.                    RingStr,
  598.                    AnswerStr        : String[20];
  599.                    ErrorFreeString  : String[15];
  600.  
  601.                    Connect21k,
  602.                    Connect24k,
  603.                    Connect26k,
  604.                    Connect28k,
  605.                    Connect57k,
  606.                    Connect64k       : String[40];
  607.  
  608.                    Connect31k,
  609.                    Connect33k       : String[40];
  610.  
  611.                    FreeSpace        : Array[1..100] of Byte;
  612.                  end;
  613.  
  614.   ARCrecord = record
  615.                 Extension : String[3];
  616.                 UnpackCmd,
  617.                 PackCmd   : String[60];
  618.               end;
  619.  
  620.   CONFIGrecord = record
  621.     VersionID           : Word;
  622.     xCommPort           : Byte;
  623.     xBaud               : LongInt;
  624.     xInitTries          : Byte;
  625.     xInitStr,
  626.     xBusyStr            : String[70];
  627.     xInitResp,
  628.     xBusyResp,
  629.     xConnect300,
  630.     xConnect1200,
  631.     xConnect2400,
  632.     xConnect4800,
  633.     xConnect9600,
  634.     xConnect19k,
  635.     xConnect38k         : String[40];
  636.     xAnswerPhone        : Boolean;
  637.     xRing,
  638.     xAnswerStr          : String[20];
  639.     xFlushBuffer        : Boolean;
  640.     xModemDelay         : Integer;
  641.  
  642.     MinimumBaud,
  643.     GraphicsBaud,
  644.     TransferBaud        : word;
  645.     SlowBaudTimeStart,
  646.     SlowBaudTimeEnd,
  647.     DownloadTimeStart,
  648.     DownloadTimeEnd     : Time;
  649.  
  650.     PageStart           : Array[0..6] of Time;
  651.     PageEnd             : Array[0..6] of Time;
  652.  
  653.     SeriNum,
  654.     CustNum             : String[22];
  655. {}  FreeSpace1          : Array[1..24] of Byte;
  656.     PwdExpiry           : Word;
  657.  
  658.     MenuPath,
  659.     TextPath,
  660.     AttachPath,
  661.     NodelistPath,
  662.     MsgBasePath,
  663.     SysPath,
  664.     ExternalEdCmd       : String[60];
  665.  
  666.     Address             : Array[0..9] of NetAddress;
  667.     SystemName          : String[30];
  668.  
  669.     NewSecurity         : Word;
  670.     NewCredit           : Word;
  671.     NewFlags            : FlagType;
  672.  
  673.     OriginLine          : String[60];
  674.     QuoteString         : String[15];
  675.     Sysop               : String[35];
  676.     LogFileName         : String[60];
  677.     FastLogon,
  678.     AllowSysRem,
  679.     MonoMode,
  680.     StrictPwdChecking,
  681.     DirectWrite,
  682.     SnowCheck           : Boolean;
  683.     CreditFactor        : Integer;
  684.  
  685.     UserTimeOut,
  686.     LogonTime,
  687.     PasswordTries,
  688.     MaxPage,
  689.     PageLength          : Word;
  690.     CheckForMultiLogon,
  691.     ExcludeSysopFromList,
  692.     OneWordNames        : Boolean;
  693.     CheckMail           : AskType;
  694.     AskVoicePhone,
  695.     AskDataPhone,
  696.     DoFullMailCheck,
  697.     AllowFileShells,
  698.     FixUploadDates,
  699.     FreezeChat          : Boolean;
  700.     ANSI,                       { ANSI: Yes, no, or ask new users     }
  701.     ClearScreen,                { Clear:        "                     }
  702.     MorePrompt          : AskType;    { More:         "                     }
  703.     UploadMsgs          : Boolean;
  704.     KillSent            : AskType;    { Kill/Sent     "                     }
  705.  
  706.     CrashAskSec         : Word;       { Min sec# to ask 'Crash Mail ?'      }
  707.     CrashAskFlags       : FlagType;
  708.     CrashSec            : Word;       { Min sec# to always send crash mail. }
  709.     CrashFlags          : FlagType;
  710.     FAttachSec          : Word;       {        "    ask 'File Attach ?'     }
  711.     FAttachFlags        : FlagType;
  712.  
  713.     NormFore,
  714.     NormBack,
  715.     StatFore,
  716.     StatBack,
  717.     HiBack,
  718.     HiFore,
  719.     WindFore,
  720.     WindBack,
  721.     ExitLocal,
  722.     Exit300,
  723.     Exit1200,
  724.     Exit2400,
  725.     Exit4800,
  726.     Exit9600,
  727.     Exit19k,
  728.     Exit38k             : Byte;
  729.  
  730.     MultiLine           : Boolean;
  731.     MinPwdLen           : Byte;
  732.     MinUpSpace          : Word;
  733.     HotKeys             : AskType;
  734.     BorderFore,
  735.     BorderBack,
  736.     BarFore,
  737.     BarBack,
  738.     LogStyle,
  739.     MultiTasker,
  740.     PwdBoard            : Byte;
  741.     xBufferSize         : Word;
  742.     FKeys               : Array[1..10] of String[60];
  743.  
  744.     WhyPage             : Boolean;
  745.     LeaveMsg            : Byte;
  746.     ShowMissingFiles,
  747.     xLockModem          : Boolean;
  748. {}  FreeSpace2          : Array[1..10] of Byte;
  749.     AllowNetmailReplies : Boolean;
  750.     LogonPrompt         : String[40];
  751.     CheckNewFiles       : AskType;
  752.     ReplyHeader         : String[60];
  753.     BlankSecs           : byte;
  754.     ProtocolAttrib      : Array[1..6] of Byte;
  755.     xErrorFreeString    : String[15];
  756.     xDefaultCombined    : array[1..25] of Byte;
  757.     RenumThreshold      : Word;
  758.     LeftBracket,
  759.     RightBracket        : Char;
  760.     AskForHandle        : Boolean;
  761.     AskForBirthDate     : Boolean;
  762.  
  763.     GroupMailSec        : Word;
  764.  
  765.     ConfirmMsgDeletes   : Boolean;
  766.  
  767.     FreeSpace4          : Array[1..30] of byte;
  768.  
  769.     TempScanDir         : String[60];
  770.     ScanNow             : AskType;
  771.     xUnknownArcAction,
  772.     xFailedUnpackAction,
  773.     FailedScanAction    : Byte; {Bit 0:Mark deleted, 1:Mark unlisted, 2:Mark notavail}
  774.     xUnknownArcArea,
  775.     xFailedUnpackArea,
  776.     FailedScanArea      : Word;
  777.     ScanCmd             : String[60];
  778.     xDeductIfUnknown    : Boolean;
  779.  
  780.     NewUserGroup        : Byte;
  781.     AVATAR              : AskType;
  782.     BadPwdArea          : Byte;
  783.     Location            : String[40];
  784.     DoAfterAction       : Byte; {0 = wait for CR, > 0 = wait for x seconds}
  785. {}  OldFileLine         : String[40];
  786.     CRfore,
  787.     CRback              : Byte;
  788.     LangHdr             : String[40];
  789.     xSendBreak          : Boolean;
  790. {}  ListPath            : String[60];
  791.     FullMsgView         : AskType;
  792.     EMSI_Enable         : AskType;
  793.     EMSI_NewUser        : Boolean;
  794.  
  795.     EchoChar            : String[1];
  796.     xConnect7200,
  797.     xConnect12000,
  798.     xConnect14400       : String[40];
  799.     Exit7200,
  800.     Exit12000,
  801.     Exit14400           : Byte;
  802.     ChatCommand         : String[60];
  803.     ExtEd               : AskType;
  804.     NewuserLanguage     : Byte;
  805.     LanguagePrompt      : String[40];
  806.     VideoMode           : VideoType;
  807.     AutoDetectANSI      : Boolean;
  808.     xOffHook            : Boolean;
  809.     NewUserDateFormat   : Byte;
  810.     KeyboardPwd         : String[15];
  811.     CapLocation         : Boolean;
  812.     NewuserSub          : Byte;
  813.     PrinterName         : String[4];
  814.     HilitePromptFore,
  815.     HiLitePromptBack    : Byte;
  816.     xInitStr2           : String[70];
  817.     AltJSwap            : Boolean;
  818.     SemPath             : String[60];
  819.     AutoChatCapture     : Boolean;
  820.  
  821.     FileBasePath        : String[60];
  822.     NewFileTag          : Boolean;
  823.     IgnoreDupeExt       : Boolean;
  824.     TempCDFilePath      : String[60];
  825.     TagFore,
  826.     TagBack             : Byte;
  827.     xConnect16k         : String[40];
  828.     Exit16k,
  829.     FilePayback         : Byte;
  830.     FileLine,
  831.     FileMissingLine     : String[200];
  832.     NewUserULCredit     : Byte;
  833.     NewUserULCreditK    : Word;
  834.     ArcInfo             : Array[1..10] of ARCrecord;
  835.     RAMGRAltFKeys       : Array[1..5] of String[60];
  836.     ArcViewCmd          : String[60];
  837.     xConnectFax         : String[40];
  838.     ExitFax             : Byte;
  839.     UseXMS,
  840.     UseEMS              : Boolean;
  841.     CheckDOB            : Byte;
  842.     EchoCheck           : AskType;
  843.     ccSec,
  844.     ReturnRecSec        : Word;
  845.     HonourNetReq        : Boolean;
  846.     DefaultCombined     : COMBINEDrecord;
  847.     AskForSex,
  848.     AskForAddress       : Boolean;
  849.     DLdesc              : AskType;
  850.     NewPhoneScan        : Boolean;
  851.  
  852.     Exit21k,
  853.     Exit24k,
  854.     Exit26k,
  855.     Exit28k,
  856.     Exit57k,
  857.     Exit64k             : Byte;
  858.  
  859.     TagLogoffWarning,
  860.     LimitLocal,
  861.     SavePasswords       : Boolean;
  862.  
  863.     BlankLogins         : Byte;
  864.     ripiconpath         : string[60];
  865.  
  866.     Exit31k,
  867.     Exit33k             : Byte;
  868.     IncludeNewCDareas   : Boolean;
  869.  
  870.     FutureExpansion : Array[1..513] of Byte;
  871.   end;
  872.  
  873.   EXITINFOrecord = record
  874.                      Baud             : Word;
  875.                      SysInfo          : SYSINFOrecord;
  876.                      TimeLogInfo      : TIMELOGrecord;
  877.                      UserInfo         : USERSrecord;
  878.                      EventInfo        : EVENTrecord;
  879.                      NetMailEntered,
  880.                      EchoMailEntered  : Boolean;
  881.                      LoginTime        : Time;
  882.                      LoginDate        : Date;
  883.                      TimeLimit        : Word;
  884.                      LoginSec         : LongInt;
  885.                      UserRecord       : Integer;
  886.                      ReadThru,
  887.                      NumberPages,
  888.                      DownloadLimit    : Word;
  889.                      TimeOfCreation   : Time;
  890.                      LogonPasswordCRC : LongInt;
  891.                      WantChat         : Boolean;
  892.  
  893.                      DeductedTime     : Integer;
  894.                      MenuStack        : Array[1..50] of String[8];
  895.                      MenuStackPointer : Byte;
  896.                      UserXIinfo       : USERSXIrecord;
  897.                      ErrorFreeConnect,
  898.                      SysopNext        : Boolean;
  899.  
  900.                      EMSI_Session     : Boolean;        { These fields hold  }
  901.                      EMSI_Crtdef,                       { data related to an }
  902.                      EMSI_Protocols,                    { EMSI session       }
  903.                      EMSI_Capabilities,
  904.                      EMSI_Requests,
  905.                      EMSI_Software    : String[40];
  906.                      Hold_Attr1,
  907.                      Hold_Attr2,
  908.                      Hold_Len         : Byte;
  909.  
  910.                      PageReason       : String[80];
  911.                      StatusLine       : Byte;
  912.                      LastCostMenu     : String[8];
  913.                      MenuCostPerMin   : Word;
  914.  
  915.                      DoesAVT,
  916.                      RIPmode          : Boolean;
  917.                      RIPVersion       : Byte;
  918.                      ExtraSpace       : Array[1..85] of Byte;
  919.                  end;
  920.  
  921.   PROTOCOLrecord = record
  922.                      Name           : String[15];
  923.                      ActiveKey      : Char;
  924.                      OpusTypeCtlFile,
  925.                      BatchAvailable : Boolean;
  926.                      Attribute      : Byte; { 0=Disabled, 1=Enabled }
  927.                      LogFileName,
  928.                      CtlFileName,
  929.                      DnCmdString,
  930.                      DnCtlString,
  931.                      UpCmdString,
  932.                      UpCtlString    : String[80];
  933.                      UpLogKeyword,
  934.                      DnLogKeyword   : String[20];
  935.                      XferDescWordNum,
  936.                      XferNameWordNum : Byte;
  937.                    end;
  938.  
  939.  
  940.